"use strict";
const { Model } = require("sequelize");
const moment = require("moment");
moment.locale("zh-cn");
module.exports = (sequelize, DataTypes) => {
  class Message extends Model {
    /**
     * Helper method for defining associations.
     * This method is not a part of Sequelize lifecycle.
     * The `models/index` file will call this method automatically.
     */
    static associate(models) {
      // define association here
    }
  }
  // level:1 普通消息 2 紧急消息 3 重要消息 4 紧急重要消息 5 重要紧急消息
  // type:1 系统消息 2 业务消息 3 通知消息 4 提醒消息 5 警告消息 6 错误消息 7 调试消息 8 信息消息 9 成功消息 10 失败消息 11 未知消息 12 相机 13 机器人消息 14 wcs 消息
  // status:1 未读 2 已读
  // isWebSocket:1 是 2 否
  // receiverId: all 所有用户
  // receiverId: userId 单个用户

  Message.init(
    {
      title: DataTypes.STRING,
      content: DataTypes.STRING,
      senderId: DataTypes.STRING,
      receiverId: DataTypes.STRING,
      level: DataTypes.STRING,
      type: DataTypes.STRING,
      isWebSocket: DataTypes.STRING,
      status: DataTypes.STRING,
      deletedAt: DataTypes.DATE,
      routParams: DataTypes.TEXT,
      timestamp: {
        type: DataTypes.DATE,
        get() {
          return moment(this.getDataValue("timestamp")).format(
            "YYYY-MM-DD HH:mm:ss"
          );
        },
      },
      createdAt: {
        type: DataTypes.DATE,
        get() {
          return moment(this.getDataValue("createdAt")).format(
            "YYYY-MM-DD HH:mm:ss"
          );
        },
      },
      updatedAt: {
        type: DataTypes.DATE,
        get() {
          return moment(this.getDataValue("updatedAt")).format(
            "YYYY-MM-DD HH:mm:ss"
          );
        },
      },
    },
    {
      sequelize,
      modelName: "Message",
    }
  );
  return Message;
};
